Cài thêm xdebug cho docker
Ở phần trước ( Cài đặt môi trường phát triển php với docker ) chúng ta đã làm việc đến phần docker-compose tạo php. Ở phần này mình xin nói ngắn gọn cách cài xdebug:
Đây là file docker compose của mình với nội dung có cả mysql, nginx và php custom file:
version: '3'
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/conf.d/nginx.conf
- ./app:/app
php:
build:
context: .
dockerfile: PHP_CUSTOM.Dockerfile
volumes:
- ./app:/app
- ./xdebug.ini:/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
mysql:
image: mariadb:latest
environment:
MYSQL_ROOT_PASSWORD: 'secret'
MYSQL_USER: 'admin'
MYSQL_PASSWORD: 'secret'
MYSQL_DATABASE: 'testing'
volumes:
- mysqldata:/var/lib/mysql
ports:
- 3306:3306
volumes:
mysqldata: {}
có cái đoạn khá quan trọng:
./xdebug.ini:/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
ý nói là chúng ta sẽ bind file xdebug.ini
vào trong folder /usr/local/etc/php/conf.d/
Vậy chúng ta sẽ có 1 file có tên là xdebug.ini như sau:
# xdebug.ini
zend_extension=xdebug.so
# For xdebug 3
xdebug.mode=debug,profile,trace
xdebug.start_with_request=yes
xdebug.client_host=host.docker.internal
xdebug.client_port=9001
xdebug.log_level=0
xdebug.remote_enable=1
xdebug.idekey=VSCODE
xdebug.remote_autostart=1
còn docker file của php custom thì vẫn như cũ :
/PHP_CUSTOM.Dockerfile nội dung như sau:
FROM php:7.3-fpm
RUN docker-php-ext-install pdo pdo_mysql
RUN pecl install xdebug && docker-php-ext-enable xdebug
vì trong file docker compose mình có nói là code php sẽ được bind từ ./app:/app nên khi config file cài đặt của vscode sẽ như này:
{
"version": "0.2.0",
"configurations": [
{
"name": "XDebug (Docker)",
"type": "php",
"request": "launch",
"port": 9001,
"pathMappings": {
"/app": "${workspaceRoot}/app",
}
}
]
}
Chú ý đoạn cài đặt pathMappings
được định nghĩa bind từ app qua ${workspaceRoot}/app nghen!
Gọi lệnh :
docker-compose build --no-cache
docker-compose up
kết quả
và đặt debug thì được: